/**
 * 邮箱
 * @param {*} s
 */
export function isEmail(s) {
  return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s);
}

/**
 * 手机号码
 * @param {*} s
 */
export function isMobile(s) {
  return /^1[0-9]{10}$/.test(s);
}

/**
 * 电话号码
 * @param {*} s
 */
export function isPhone(s) {
  return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s);
}

/**
 * URL地址
 * @param {*} s
 */
export function isURL(s) {
  return /^http[s]?:\/\/.*/.test(s);
}

// 验证数字和字母组成
export const isNumAndStr = (rule, value, callback) => {
  if (!/^[A-Za-z0-9]+$/g.test(value) && value) {
    callback(new Error('只能由数字和字母组成！'));
  }
  callback();
};

// 验证不包含字母
export const isNoWord = (rule, value, callback) => {
  if (!/^[^A-Za-z]*$/g.test(value) && value) {
    callback(new Error('不能包含字母！'));
  }
  callback();
};

// 验证数字
export const isNumber = (rule, value, callback) => {
  if (!/^\d{1,}$/g.test(value) && value) {
    callback(new Error('只能为数字！'));
  }
  callback();
};

// 验证身份证号
export const isIDCard = (rule, value, callback) => {
  if (!/(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/g.test(value) && value) {
    callback(new Error('身份证格式不正确！'));
  }
  callback();
};

// 验证手机号, 只要是13,14,15,16,17,18,19开头即可
export const isPhoneNumber = (rule, value, callback) => {
  if (!/^(?:(?:\+|00)86)?1[3-9]\d{9}$/g.test(value) && value) {
    callback(new Error('手机号格式不正确！'));
  }
  callback();
};

// 验证email(邮箱)
export const isEmails = (rule, value, callback) => {
  if (!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/g.test(value) && value) {
    callback(new Error('email格式不正确！'));
  }
  callback();
};

// 验证座机电话
export const isLandlineTelephone = (rule, value, callback) => {
  if (!/\d{3}-\d{8}|\d{4}-\d{7}/g.test(value) && value) {
    callback(new Error('座机电话格式不正确'));
  }
  callback();
};

// 邮编校验
export const isPostalCode = (rule, value, callback) => {
  if (!/^[1-9]\d{5}(?!\d)$/g.test(value) && value) {
    callback(new Error('邮编格式不正确'));
  }
  callback();
};

